Appearance
Node.js 是一个基于Chrome V8 引擎的JavaScript运行环境 Node.js的模块使用 require 引入,内置模块和插件模块直接引入,自定义模块引入时写相对路径
安装node.js
nodejs环境和npm包管理工具,需打包安装(两者的版本号相对应)
安装方式
1.nodejs安装包 2.mvn版本管理工具 注:两种方式采用一种即可
安装mvn版本管理工具
使用mvn版本工具安装node.js 默认安装路径: C:\Users\用户名AppData\Roaming\nvm
一、下载并安装nvm-windows
二、配置系统变量,配置路径:我的电脑/属性/高级设置/环境变量/系统变量
NVM_HOME: C:\Users\Pc\AppData\Roaming\nvm
NVM_SYMLINK: C:\Program File\node.js
path追加: %NVM_HOME% 和 %NVM_SYMLINK%
三、更改下载源
在安装目录/settings.txt中追加代码
node_mirror: https://npm.taobao.org/mirrors/node/
npm_mirror: https://npm.taobao.org/mirrors/npm/mvn命令
查看可用版本 nvm list available 查看可下载的nodejs版本信息,LTS列表示稳定版本
查看已有版本 nvm list 列出当前电脑下的Node.js的版本列表
切换版本 nvm install 版本号 安装某一个版本
安装版本 nvm use 版本号 切换某一个版本注:如果npm没有同步安装,则需从node.js官网下载对应版本的npm,安装在版本文件夹内(node_modules/npm)
基本操作
命令行工具通用操作
ls 查看当前路径的所有文件
dir 查看当前路径的所有文件
tab 补全命令
↑ 查看历史命令
cd 目录名 进入目录
软件名 --version 查看软件版本(简写 -v)执行node.js文件
node js文件 注:js文件的后缀名可以省略node.js文件监听插件
nodemon:每次保存触发监听
supervisor: 每秒触发监听
npm install nodemon -g
npm install supervisor -g内置模块
Node.js内部提供的模块,直接加载参考api使用,无需安装。
内置模块通常为异步操作(async),在方法后添加syn可转换为同步操作
path路径模块
当前目录__dirname
表示当前目录路径的字符串
路径拼接path.join([...paths])
返回值:拼接后路径(字符串)
参数:多个路径paths(字符串)
let url = path.join(__dirname,'src','html','index.html') 例:主页路径查找后缀path.extname(path)
返回值:文件后缀(字符串)
参数:路径path(字符串)
let url = 'C:\Users\41702\Documents\_note\JAVAScript笔记2021.8.18.b.md'
let ext = path.extname(url) 返回:.md查找路径path.dirname(path)
返回值:网页路径(字符串)
参数:路径path(字符串)
let url = 'C:\Users\41702\Documents\_note\JAVAScript笔记2021.8.18.b.md'
let dirname = path.dirname(url) 返回:\C:\Users\41702\Documents\_note查找文件名path.basename(path[,ext]);
返回值:文件名(字符串)
参数:路径path(字符串)
参数:末尾去除部分ext(字符串)
let url = 'C:\Users\41702\Documents\_note\JAVAScript笔记2021.8.18.b.md'
let dirname = path.basename(url) 返回:JAVAScript笔记2021.8.18.b.md
let dirname = path.basename(url,8.b.md) 返回:JAVAScript笔记2021.8.1fs文件系统
目录
增加目录/文件
创建目录fs.mkdir(url,(err)=>{}) 创建文件fs.writeFile(file, data[, options], callback)
删除目录/文件
删除目录fs.rmdir(url,(err)=>{}) 删除文件fs.unlink(url,(err)=>{})
重命名目录/文件
重命名目录/文件fs.rename(oldurl,newurl,(err)=>{})
查找目录/文件
读取目录fs.readdir(url,(err,files)=>{}) 读取文件fs.readFile(url,[encoding],(err,files)=>{})创建目录fs.mkdir(url,callback)
参数:新目录路径url(字符串) 注:只能创建一层目录
参数:运行结束后执行的函数callback
回调参数:错误err
fs.mkdir(path.join(__dirname, 'src'), err => { //创建目录src
if (err) throw err; //如果有错误,则抛错
console.log('创建成功');
})创建文件fs.writeFile(file, data[, options], callback)
参数:新文件路径url(字符串) 注:路径中目录需已存在,且路径包含文件名
参数:新文件内容data(字符串)
参数:**[编码格式] ** 注:通常为空,或utf-8
参数:运行结束后执行的函数callback
回调参数:错误err
js
fs.writeFile(path.join(__dirname, 'src/test.txt'), 'hello', err => { //创建文件test.txt
if (err) throw err; //如果有错误,则抛错
console.log('创建成功');
});删除目录fs.rmdir(url,callback)
参数:目标目录路径url(字符串) 注:若目录中有文件,则报错
参数:运行结束后执行的函数callback
回调参数:错误err
fs.rmdir(path.join(__dirname, 'src'), err => { //删除目录src
if (err) throw err; //如果有错误,则抛错
console.log('删除成功');
})删除文件fs.unlink(url,callback)
参数:目标文件路径url(字符串)
参数:运行结束后执行的函数callback
回调参数:错误err
fs.unlink(path.join(__dirname, 'src/test.txt'), err => { //删除文件test.txt
if (err) throw err; //如果有错误,则抛错
console.log('删除成功');
})重命名目录/文件fs.rename(oldurl,newurl,callback)
参数:源目录/文件路径oldurl(字符串)
参数:目标目录/文件路径newurl(字符串)
参数:运行结束后执行的函数callback
回调参数:错误err
let oldurl = path.join(__dirname, 'src/test.txt')
let newurl = path.join(__dirname, 'src/new.txt')
fs.rename(oldurl,newurl, err => { //将test.txt命名为new.txt
if (err) throw err; //如果有错误,则抛错
console.log('删除成功');
})读取目录fs.readdir(url,callback)
参数:目标目录url(字符串)
参数:运行结束后执行的函数callback
回调参数:错误err
回调参数:目录中的文件名集files(数组)
fs.readdir(path.join(__dirname, 'src/'), (err, files) => {
if (err) throw err;
console.log(files); //返回目录中的所有文件
});读取文件fs.readFile(url,[encoding],callback)
参数:目标目录url(字符串)
参数:编码格式encoding(字符串) 注:通常为空,或utf-8
参数:运行结束后执行的函数callback
回调参数:错误err
回调参数:目录中的文件名集data(数组)
fs.readFile(path.join(__dirname, 'src/'), (err, data) => {
if (err) throw err;
console.log(data); //返回二进制的文件内容
});
fs.readFile(path.join(__dirname, 'src/'),'utf-8', (err, data) => {
if (err) throw err;
console.log(data); //返回utf-8的文件内容
});http服务器模块
创建服务器http.createServer(callback)
回调参数:请求request
回调参数:响应response
回调方法:设置请求头response.setHeader('Access-Control-Allow-Origin', '*') 解决跨域
回调方法:设置请求头response.writeHead(statusCode状态码, [reasonPhrase数据类型], [{headers响应头}])
回调方法:响应内容response.write(响应内容)
回调方法:响应内容response.end([响应内容])
链式方法:监听链接listen([port端口号],[host主机],callback)
http.createServer((request,response)=>{
response.setHeader('Access-Control-Allow-Origin', '*');
response.writeHead(200,{'Content-Type': 'text/html;charset=utf-8'}); //设置文档类型和字符编码
response.write('<h1>hellow world</h1>'); //响应的内容
response.end(); //响应结束
}).listen(port, host,()=>{
console.log(`The server is running http://${host}:${port}`); //监听
});自定义模块
参考commonjs规范由用户采永js书写的模块。